import java.io.*;
import java.net.*;
import java.util.*;

public class Conexion
{
	ServerSocket serverSocket;
	private int puerto;

	Conexion(int puerto)
	{
		try
		{
			this.puerto = puerto;
			serverSocket = new ServerSocket(puerto);
		}
		catch (Exception e)
		{
			e.printStackTrace();
			System.exit(-1);
		}
	}

	public void run()
	{
		String xmlRecibido;
		Socket socketJugador = null;
		XmlServidor xml = null;
		BufferedReader entrada = null;
		Jugador jugador = null;

		System.out.println("Escuchando en el puerto " + puerto + ": " + this.serverSocket);

		Servidor servidor = new Servidor();
		while (true)
		{
			try
			{
				socketJugador = this.serverSocket.accept();
				entrada = new BufferedReader(new InputStreamReader(socketJugador.getInputStream()));;
				xmlRecibido = entrada.readLine();
				xml = new XmlServidor(xmlRecibido);
				comandosEnum cE = xml.identificarXml();
				if (cE == comandosEnum.NOMBRE_JUGADOR)
				{
					if(!servidor.jugadorExiste(xml.nombreJugador()))
					{
						jugador = new Jugador(xml.nombreJugador(), socketJugador, servidor);
						System.out.println("El jugador " + xml.nombreJugador() + " entro al juego.");
						servidor.agregarJugador(jugador);
						jugador.start();
					}
					else
					{
						entrada.close();
						socketJugador.close();
					}
				}
				entrada = null;
				socketJugador = null;
				xml = null;
				jugador = null;
			}
			catch (Exception e)
			{
				e.printStackTrace();
			}
		}
	}
}